package bishiqiangxun;
import java.util.*;
public class Test2 {
    public static void main(String[] args) {
        //题目走迷宫  寻找最短路径
        //算法  : BFS  广度优先遍历
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        //先输入

        String s = in.nextLine();
        String[] str4 = s.split(" ");
        int n = Integer.parseInt(str4[0]);
        int m = Integer.parseInt(str4[1]);
        String s2 = in.nextLine();
        String[] str5 = s2.split(" ");  //可以记录下来 坐标的起点和终点
        int x1 = Integer.parseInt(str5[0]);
        int y1 = Integer.parseInt(str5[1]);
        int x2 = Integer.parseInt(str5[2]);
        int y2 = Integer.parseInt(str5[3]);

        //用二维数组记录下来 迷宫是啥样子的
        char[][] cs = new char[n][m];
        for(int i = 0; i < n; i++) {
            String str2 = in.nextLine();
            for(int j = 0; j < m; j++) {
                cs[i][j] = str2.charAt(j);
            }
        }

        //用队列保存 每个点的没遍历过的左右上下的点
        Queue<int[]> queue = new LinkedList<>();
        //记录一下节点  和到达该节点的步数
        int[] arr = {0,x1-1,y1-1};
        queue.offer(arr);
        //开始BFS
        int count = BFS(n,m,cs,x2-1,y2-1,queue);
        System.out.println(count);
    }

    private static int BFS(int n,int m,char[][] cs,int x2,int y2,Queue<int[]> queue) {
        while(queue.size() != 0) {
            int[] arr = queue.poll();
            int b = arr[0];  //步数
            int x = arr[1];
            int y = arr[2];
            if(x == x2 && y == y2) return b;
            //定义向量数组
            int[] dx = {1,0,-1,0};
            int[] dy = {0,1,0,-1};
            for(int c = 0; c < 4; c++) {
                int tix = x + dx[c];
                int tiy = y + dy[c];
                if(tix >= 0 && tix < n && tiy >= 0 && tiy < m && cs[tix][tiy] == '.'){
                    //移动了
                    int[] arr2 = {b+1,tix,tiy};
                    queue.offer(arr2);  //进入队列
                    //把遍历过的 位置改了 不能再遍历
                    cs[tix][tiy] = '?';
                }
            }
        }
        return -1;
    }
    }

